package org.jeecg.common.util;

/**
 * Created on 2023/8/10.
 *
 * @author hua
 */

import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

public class BufferedImageToMultipartFileExample {
    public static void main(String[] args) {
        try {
            // 读取图片文件
            File imageFile = new File("watermarked_image.jpg");
            BufferedImage bufferedImage = ImageIO.read(imageFile);

            // 转换为MultipartFile对象
            MultipartFile multipartFile = convertToMultipartFile(bufferedImage);

            // 使用MultipartFile对象进行操作，比如上传到服务器
            // ...

            System.out.println("BufferedImage converted to MultipartFile successfully.");
        } catch (IOException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }

    private static MultipartFile convertToMultipartFile(BufferedImage bufferedImage) throws IOException {
        //创建一个 字节数组输出 流
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        //读取到这个流里
        ImageIO.write(bufferedImage, "jpg", outputStream);

        return null;
        //return new MockMultipartFile("image.jpg", outputStream.toByteArray());
        //获取到字节数组，封装成 MockMultipartFile
    }
       /*<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>*/
}



要将BufferedImage对象转换为MultipartFile对象，你需要使用ByteArrayOutputStream将图像数据写入字节数组，
并使用MockMultipartFile或者其他相关的MultipartFile实现类创建MultipartFile对象。

上述代码中，我们首先使用ImageIO类从文件中读取一张图片，得到一个BufferedImage对象。然后，通过调用convertToMultipartFile方法，
将BufferedImage对象转换为MultipartFile对象。在convertToMultipartFile方法中，
我们使用ByteArrayOutputStream将图像数据写入字节数组，并使用MockMultipartFile类创建一个MultipartFile对象。

请注意，你需要将示例代码中的"image.jpg"替换为你自己的图片路径。

希望这个示例能帮助你将BufferedImage对象转换为MultipartFile对象。
如果你没有使用Spring框架，你可以根据需要选择其他的MultipartFile实现类，来创建MultipartFile对象。




请记得在使用MockMultipartFile时，确保你已经添加了Spring相关的依赖。
如果你不是在测试环境下创建MultipartFile对象，
而是在Web应用中接收上传文件时需要创建MultipartFile对象，那么你可以使用框架提供的实际MultipartFile实现类，
比如Spring MVC中的org.springframework.web.multipart.commons.CommonsMultipartFile
或者Servlet 3.0以后的javax.servlet.http.Part。
